package com.hlkj.pay.service.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.app.merchant.ext.impl.wxpay.dto.WxComplaintHistoryDto;
import com.hlkj.pay.dto.order.ComplaintOrderQueryDto;
import com.hlkj.pay.infrastructure.model.order.OrderComplaintDO;
import com.hlkj.pay.infrastructure.model.order.OrderComplaintHistoryDO;
import com.hlkj.pay.vo.order.req.ComplaintCompleteReq;
import com.hlkj.pay.vo.order.req.ComplaintDeleteReq;
import com.hlkj.pay.vo.order.req.ComplaintReplyUserReq;

import java.util.List;

/**
 * @author HlpayTeam
 * @date 2024/11/07 10:46
 */
public interface IOrderComplaintService {

	CommonResult<Void> addOrderComplaint(OrderComplaintDO orderComplaintDO);

	PageResult<OrderComplaintDO> queryPage(ComplaintOrderQueryDto complaintOrderQueryDto);

	List<OrderComplaintDO> queryList(ComplaintOrderQueryDto complaintOrderQueryDto);

	OrderComplaintDO queryDetail(Long id);

	OrderComplaintDO queryDetailByComplaintId(String complaintId);

	OrderComplaintDO queryDetailAndSync(Long id);

	CommonResult<Void> updateOrderComplaint(OrderComplaintDO orderComplaintDO);

	CommonResult<Void> delOrderComplaint(Long id);

	OrderComplaintDO selectOne(ComplaintOrderQueryDto complaintOrderQueryDto);

	CommonResult<Void> replyUser(ComplaintReplyUserReq complaintOrderUserReq);

	CommonResult<Void> complete(ComplaintCompleteReq complaintCompleteReq);

	PageResult<WxComplaintHistoryDto> queryHistoryPage(ComplaintOrderQueryDto complaintOrderQueryDto);

	CommonResult<Void> delBatch(ComplaintDeleteReq complaintDeleteReq);

	CommonResult<Void> refund(ComplaintCompleteReq complaintCompleteReq);

	Integer countBySn(ComplaintOrderQueryDto complaintOrderQueryDto);

	PageResult<OrderComplaintHistoryDO> queryComplaintHistoryPage(ComplaintOrderQueryDto complaintOrderQueryDto);

}
